"""
文件件读写模式分为三大类
r  读取模式
    r: 文本型读取模式
    rb:字节型读取模式
    r+:文本型读取模式加强
    rb+:字节型读取模式加强

w  写入模式
    w: 文本型写入模式
    wb:字节型写入模式
    w+:文本型写入模式加强
    wb+:字节型写入模式加强

a  追加模式
    a: 文本型追加模式
    ab:字节型追加模式
    a+:文本型追加模式加强
    ab+:字节型追加模式加强

拆分:
# 读写类别
    读取: 从文件中读取数据,以读取模式打开文件时,文件必须存在,从文件开头读取,不会影响原数据
    写入: 向文件中写入数据,当以写入模式打开文件时,文件如果存在,则清空原数据,如果不存在,则新建文件
    追加: 向文件中追加数据,当以追加模式打开文件时,文件如果存在,则在原文件末尾追加数据,如果不存在,则新建文件

# 模式
    # 字符操作: 读写操作时,操作的是字符型数据
    # 字节操作: 读写操作时,操作的是字节型数据
    # 字符加强操作: 操作的是字符型数据,但是在读的模式下可以写,在写的模式下可以读
    # 字节加强操作: 操作的是字节型数据,但是在读的模式下可以写,在写的模式下可以读

# 举例:
wb+:向文件中写入数据,当以写入模式打开文件时,文件如果存在,则清空原数据,如果不存在,则新建文件,操作的是字节型数据,在写的模式下可以读
"""

# 练习: 创建一个文件,在内部写入'衣带渐宽终不悔,为伊消得人憔悴.',并读取出来打印到控制台
# # 1. 打开文件
# file = open('2.txt', 'r+', encoding='utf8')
# # 2. 写入数据
# file.write('衣带渐宽终不悔,为伊消得人憔悴.')
# # 3. 读取数据
# content = file.read()
# print(content)
# # 4. 关闭文件
# file.close()

# 根据输出的结果和文件内容,可以得出如下结论:
# 使用r+时,既可以读,又可以写,但是此时打开文件后,光标在文件开始位置,向后写入,覆盖原有字符,读取时,以光标位置为起始点继续向后读取.

# 1. 打开文件
# 使用w+会将文件中的数据清空,并且可读可写
file = open('1.txt', 'w+', encoding='utf8')
# 2. 写入数据
file.write('衣带渐宽终不悔,为伊消得人憔悴.')
# 3. 读取数据
content = file.read()
print(content)
# 4. 关闭文件
file.close()

print('-------------------------------')
# 根据输出的结果和文件内容,可以得出如下结论:
# 使用w+时,既可以读,又可以写, 但是此时打开文件后,文件内容将被清空,从开始位置想向后写入内容,当读取数据时,光标在数据末尾,向后读物无内容,所以打印内容为空

# 解决方案 : 控制光标
# 1. 打开文件
# 使用w+会将文件中的数据清空,并且可读可写
file = open('1.txt', 'w+', encoding='utf8')
# 2. 写入数据
file.write('衣带渐宽终不悔,为伊消得人憔悴.')

# 解决方案: 将光标移动到文件的开始位置
file.seek(0, 0)

# 3. 读取数据
content = file.read()
print(content)
# 4. 关闭文件
file.close()
